#ifndef _BSP_RELAY_H_
#define _BSP_RELAY_H_

#include <stdio.h>
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/uart.h"
#include "driver/gpio.h"
#include "driver/i2c.h"
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "freertos/queue.h"
#include <inttypes.h>
#include "sdkconfig.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "rom/ets_sys.h"
#include "esp_system.h"
#include "driver/gpio.h"
#include "driver/spi_master.h"
#include "driver/spi_common.h"
#include "hal/gpio_types.h"
#include "string.h"

#define GPIO_RELAY_1       33  // 第一个继电器的GPIO引脚
#define GPIO_RELAY_2       32  // 第二个继电器的GPIO引脚
#define GPIO_RELAY_3       27  // 第三个继电器的GPIO引脚
#define GPIO_RELAY_4       26  // 第四个继电器的GPIO引脚
#define GPIO_RELAY_5       25  // 第五个继电器的GPIO引脚
#define GPIO_RELAY_6       14  // 第六个继电器的GPIO引脚
#define GPIO_RELAY_7       13  // 第七个继电器的GPIO引脚
#define GPIO_RELAY_8       12  // 第八个继电器的GPIO引脚

#define RELAY_1_OUT(x)        gpio_set_level(GPIO_RELAY_1, x ? 1 : 0)
#define RELAY_2_OUT(x)        gpio_set_level(GPIO_RELAY_2, x ? 1 : 0)
#define RELAY_3_OUT(x)        gpio_set_level(GPIO_RELAY_3, x ? 1 : 0)
#define RELAY_4_OUT(x)        gpio_set_level(GPIO_RELAY_4, x ? 1 : 0)
#define RELAY_5_OUT(x)        gpio_set_level(GPIO_RELAY_5, x ? 1 : 0)
#define RELAY_6_OUT(x)        gpio_set_level(GPIO_RELAY_6, x ? 1 : 0)
#define RELAY_7_OUT(x)        gpio_set_level(GPIO_RELAY_7, x ? 1 : 0)
#define RELAY_8_OUT(x)        gpio_set_level(GPIO_RELAY_8, x ? 1 : 0)

void Relay_GPIO_Init(void);//继电器引脚初始化
void Set_Relay_Switch(unsigned char relay, unsigned char state);//设置继电器状态

#endif
